package com.teamin.mapper;

import com.teamin.entity.UserEntity;
import org.apache.ibatis.annotations.Param;

import java.util.Date;

public interface UserMapper {
    int deleteByPrimaryKey(@Param("userId") Long userId);

    /**
     * 添加用户 ID 会返回到 TaskEntity 中的userId 中
     * {username(必) ,headIcon,company}
     * @param record ,
     * @return 0表示没有添加成功,1表示添加成功
     */
    int insertSelective(UserEntity record);

    /**
     * 查询 用户的信息
     * @param id 用户ID
     * @return 用户信息
     */
    UserEntity selectByPrimaryKey(Long id);

    /**
     * 更新用户信息,选择性的,更新不为空的字段
     * @param record 包括这些参数 {userName,headIcon,company} 都是可选 userId必传
     * @return
     */
    int updateByPrimaryKeySelective(UserEntity record);
    
    /**
     * 是否存在用户
     * @param userId
     * @return
     */
	Boolean userExist(@Param("userId")Long userId);
	
	/**
	 * 用户是否在圈子中
	 * @param userId
	 * @param circleId
	 * @return
	 */
	Boolean userInCircle(@Param("userId")Long userId,@Param("circleId")Long circleId);
	/**
	 * 用户是否在任务中
	 * @param userId
	 * @param circleId
	 * @return
	 */
	Boolean userInTask(@Param("userId")Long userId,@Param("taskId")Long taskId);


	/**
	 * 更新小程序的from
	 * @param fromId 小程序提交表单ID
	 * @param state 0表示没有使用,1表示正在使用2表示已使用
	 */
	public int updateSmallFromIdState(@Param("userId")Long userId,@Param("fromId")String fromId,@Param("state")Integer state) ;

	/**
	 * 新增小程序的from
	 * @param fromId 小程序提交表单ID
	 */
	public int addSmallFromId(@Param("userId")Long userId,@Param("fromId")String fromId) ;

	/**
	 * 是否存在此fromid
	 * @param fromId 小程序提交表单ID
	 */
	public boolean existFromId(@Param("userId")Long userId,@Param("fromId")String fromId) ;

	/**
	 * 获取小程序的fromId
	 * @param userId 用户ID
	 */
	public String getFromId(@Param("userId")Long userId) ;

	/**
	 * 获取用户在圈子中的未读消息
	 * @param userId 用户ID
	 */
	public Long getUnreadCount(@Param("userId")Long userId) ;

	/**
	 * 更新用户的登录时间
	 * @param userId 用户ID
	 */
	public Long updateLoginTime(@Param("userId")Long userId) ;

	/**
	 * 获取用户的最后的登录时间
	 * @param userId 用户ID
	 */
	public Date getLoginTime(@Param("userId")Long userId) ;

}